package locks

import (
	"errors"
)

var Lock_map map[string]map[string]bool

func GetLock(model string, obj string) bool {
	if Lock_map[model] != nil {
		return Lock_map[model][obj]
	}
	return false
}

func AddLock(model string, obj string) (err error) {
	if Lock_map[model] == nil {
		Lock_map[model] = make(map[string]bool)
	}
	if Lock_map[model][obj] == true {
		err = errors.New("对象被锁住")
	} else {
		Lock_map[model][obj] = true
	}
	return

}

func RemoveLock(model string, obj string) (err error) {
	if Lock_map[model] == nil {
		err = errors.New("对象未加锁")
		return
	}
	if Lock_map[model][obj] == false {
		err = errors.New("对象未加锁")
		return
	}
	Lock_map[model][obj] = false
	return
}

// func main() {
// 	err := AddLock("test", "one")
// 	if err != nil {
// 		println(err.Error())
// 	}
// 	fmt.Println(GetLock("test", "one"))
// 	err = AddLock("test", "one")
// 	if err != nil {
// 		println(err.Error())
// 	}
// 	fmt.Println(GetLock("test", "one"))
// 	fmt.Println(GetLock("test", "two"))

// 	err = RemoveLock("test", "one")
// 	if err != nil {
// 		println(err.Error())
// 	}
// 	err = RemoveLock("test", "one")
// 	if err != nil {
// 		println(err.Error())
// 	}
// 	fmt.Println(GetLock("test", "one"))
// 	fmt.Println(GetLock("test", "two"))

// }
